package com.xnyzc.lhy.common.util;

import java.math.BigDecimal;

/**
 * BigDecimal 使用注意事项:
 * *** 1. new BigDecimal() 容易丢失经度,尽量使用 BigDecimal.valueOf();
 */
public class BigDecimalUtils {

    public static final Long ZERO = 0L;

    /**
     * 根据double获取BigDecimal
     *
     * @param value
     * @return
     */
    public static BigDecimal value(Double value) {
        if (CheckUtil.objIsEmpty(value)) {
            value = 0.0;
        }
        return BigDecimal.valueOf(value);
    }

    /**
     * 根据String获取BigDecimal
     *
     * @param value
     * @return
     */
    public static BigDecimal value(String value) {
        if (CheckUtil.strIsEmpty(value)) {
            value = "0";
        }
        return new BigDecimal(value);
    }

    /**
     * 根据Integer获取BigDecimal
     *
     * @param value
     * @return
     */
    public static BigDecimal value(Integer value) {
        if (CheckUtil.objIsEmpty(value)) {
            value = 0;
        }

        return BigDecimal.valueOf(value);
    }

    /**
     * 根据Long获取BigDecimal
     *
     * @param value
     * @return
     */
    public static BigDecimal value(Long value) {
        if (CheckUtil.objIsEmpty(value)) {
            value = 0L;
        }
        return BigDecimal.valueOf(value);
    }

    /**
     * 除法 数组中的第一个顺序性除以后面的数值
     *
     * @param retainDigit 保留位数
     * @return
     */
    public static BigDecimal divideRoundHalfUp(Integer retainDigit, BigDecimal... value) {
        if (value.length <= 1) {
            return value("0");
        }
        for (int i = 0; i < value.length; i++) {
            if (i != 0) {
                value[0] = value[0].divide(value[i], retainDigit, BigDecimal.ROUND_HALF_UP);
            }
        }
        return value[0];
    }


}
